package com.prd.dto;


import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 工作报告数据表
 * </p>
 *
 * @author lizhaoyi
 * @since 2023-11-06
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class WorkReportDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @ApiModelProperty("主键id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /**
     * 工作报告日期
     */
    @ApiModelProperty("工作报告日期")
    private Date reportDate;

    /**
     * 状态0-草稿1-待督导2-待批示3-已批示4-已保存
     */
    @ApiModelProperty("状态0-草稿1-待督导2-待批示3-已批示4-已保存")
    private Integer reportStatus;

    /**
     * 上级id
     */
    @ApiModelProperty("上级id")
    private Long leaderId;

    /**
     * 督导id
     */
    @ApiModelProperty("督导id")
    private Long supervisorId;

    /**
     * 批示人id
     */
    @ApiModelProperty("批示人id")
    private Long approveId;

    /**
     * 抄送人id
     */
    @ApiModelProperty("抄送人id")
    private Long ccId;

    /**
     * 上报时间
     */
    @ApiModelProperty("上报时间")
    private Date reportedTime;

    /**
     * 工作报告类型0-日报2-周边3-月报
     */
    @ApiModelProperty("工作报告类型0-日报2-周边3-月报")
    private Integer reportType;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private LocalDateTime createdTime;

    /**
     * 创建人
     */
    @ApiModelProperty("创建人")
    private String createdBy;

    /**
     * 创建人id
     */
    @ApiModelProperty("创建人id")
    private Long createdById;

    /**
     * 工作绩效对象
     */
    @ApiModelProperty("工作绩效对象")
    private WorkPointRecordDTO workKPIPointRecordDTO;
    /**
     * 本日、本周、本月工作汇报对象
     */
    @ApiModelProperty("本日、本周、本月工作汇报对象")
    private WorkPointRecordDTO workReportPointRecordDTO;
    /**
     * 本日、本周、本月异常及处理汇报对象
     */
    @ApiModelProperty("本日、本周、本月异常及处理汇报对象")
    private WorkPointRecordDTO workErrorPointRecordDTO;
    /**
     * 次日、下周、下月工作计划
     */
    @ApiModelProperty("次日、下周、下月工作计划")
    private WorkPointRecordDTO nextWorkPlanPointRecordDTO;

    /**
     * 自定义要点对象,根据类型定义
     */
    @ApiModelProperty("自定义要点对象,根据类型定义")
    private WorkPointRecordDTO workOrderPointRecordDTO;

    /**
     * 汇报总数据列表
     */
    @ApiModelProperty("汇报总数据列表")
    private List<WorkPointRecordDTO> allWorkPointRecordDTOList;

    @ApiModelProperty("投入记录对象")
    private WorkInputRecordDTO workInputRecordDTO;

    @ApiModelProperty("投入记录对象列表")
    private List<WorkInputRecordDTO> workInputRecordDTOList;

    @ApiModelProperty("时间节点对象")
    private WorkTimeNodeRecordDTO workTimeNodeRecordDTO;

    @ApiModelProperty("时间节点对象列表")
    private List<WorkTimeNodeRecordDTO> workTimeNodeRecordDTOList;


}
